package contable.aplicacion;

import contable.dominio.Cardex;
import contable.dominio.Registro;
import contable.presentacion.Principal;
import java.awt.Component;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;

/**
 *
 * @author suncin
 */
public class Notificaciones {

    /**
     * Notificar un error o excepción usando <i>stderr</i>
     *
     * @param clase La clase de donde proviene el error
     * @param e La excepción o error a notificar
     * @see java.util.logging.Logger
     * @see java.lang.Exception
     */
    public static void notificarError(Class clase, Exception e) {
        Logger.getLogger(clase.getName()).log(Level.SEVERE, null, e);
    }

    /**
     * Notificar un error o excepción usando JOptionPane
     *
     * @param clase La clase de donde proviene el error
     * @param titulo El titulo de JOptionPane a mostrar
     * @param e La excepción o error a notificar
     * @see java.util.logging.Logger
     * @see java.lang.Exception
     * @see javax.swing.JOptionPane
     */
    public static void notificarError(Class clase, String titulo, Exception e) {
        Logger.getLogger(clase.getName()).log(Level.SEVERE, titulo, e);
        JOptionPane.showMessageDialog(null, e, titulo, JOptionPane.ERROR_MESSAGE);
    }

    /**
     * Notificar un error o excepción usando JOptionPane
     *
     * @param clase La clase de donde proviene el error
     * @param titulo El titulo de JOptionPane a mostrar
     * @param e La excepción o error a notificar
     * @param c Componente AWT o Swing que reporta el error o excepción
     * @see java.util.logging.Logger
     * @see java.lang.Exception
     * @see javax.swing.JOptionPane
     */
    public static void notificarError(Class clase, String titulo, Exception e, Component c) {
        Logger.getLogger(clase.getName()).log(Level.SEVERE, titulo, e);
        JOptionPane.showMessageDialog(c, e, titulo, JOptionPane.ERROR_MESSAGE);
    }

    /**
     * Notificar un mensaje usando stderr
     *
     * @param clase La clase de donde proviene el mensaje
     * @param titulo El titulo del mensaje a mostrar
     * @param mensaje El mensaje a mostrar
     * @see java.util.logging.Logger
     */
    public static void notificarMensaje(Class clase, String titulo, String mensaje) {
        Logger.getLogger(clase.getName()).log(Level.INFO, titulo, mensaje);
    }

    /**
     * Notificar un mensaje usando JOptionPane
     *
     * @param clase La clase de donde proviene el mensaje
     * @param titulo El titulo del mensaje a mostrar
     * @param mensaje El mensaje a mostrar
     * @param c Componente AWT o Swing que reporta el mensaje
     * @see java.util.logging.Logger
     * @see javax.swing.JOptionPane
     */
    public static void notificarMensaje(Class clase, String titulo, String mensaje, Component c) {
        Logger.getLogger(clase.getName()).log(Level.INFO, titulo, mensaje);
        JOptionPane.showMessageDialog(c, mensaje, titulo, JOptionPane.INFORMATION_MESSAGE);
    }

    public static void notificarRegistro(Registro registro){
        Principal.getInstancia().agregarRegistro(registro.getFecha(), registro.getDescripcion(), registro.getSaldo());
        System.out.println(registro);
    }

    public static void notificarCardex(Cardex cardex){
        System.out.println(cardex);
    }
}
